<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<meta name="author" content="Henning Schulzrinne">
<meta name="keywords" content="RTP; rtptools">
<title>RTP tools change history</title>
<style type="text/css">
 dt {
   margin-top: 1em;
   font-weight: bold; 
 }
</style>
</head>

<body bgcolor="#38B0DE">
<h1><a href="rtptools.html">RTP tools</a> change history</h1>

<dl>
<dt>1.22 (July 2018)</dt>
<p>
Moved source to <a
href="https://github.com/columbia-irt/rtptools">https://github.com/columbia-irt/rtptools</a><br>
Listing only major changes, see details in git log.
</p>
<ul>
<li>Add man pages. (Jan Stary)
<li>Change license to 3-clause BSD.
<li>Replace <code>typedef unsigned char u_int8</code> etc
	with <code>stdint.h</code> types. (Jan Stary)
<li>Update to new autotools. (Akira Tsukamoto)
<li>Generate html versions from man pages. (Akira Tsukamoto)
<li>Reflect the manpages in the homepage. (Jan Stary)
<li>Fix <code>recvmsg()</code> on Solaris. (Jan Stary)
<li>Detect clang for compiling. (Jan Stary)
<li>Fix generating a rpm package. (Akira Tsukamoto)
<li>Fix building on Windows. (Akira Tsukamoto)
</ul>

<dt>1.21 (July 2016)</dt>
<dd>Yann E. MORIN (yann.morin.1998@free.fr): Buildroot [1] is a
build-system targetting embedded devices. It is able
to build toolchains for various architectures, based on the traditional
GNU compiler collection gcc, the GNU binutils and various C libraries,
such as GNU libc (glibc), uClibc [2] [3] or musl [4].

<p>glibc is a feature-full C library, which has had support for Yellow
Pages (and the rest of the SUN RPC stuff) for a long time. However,
circa the 2.14 release, glibc stopped installing the RPC headers [5], on
the principle that providing the RPC implementation would be better
served by a third-party package, namely ti-rpc [6]. That did not happen
in time, so installing the RPC headers from glibc was re-instated circa
2.16.</p>

<p>uClibc (no longer maintained, replaced by a fork, uClibc-ng) is a fully
configurable C library for embedded systems. It entirely lacks a SUN RPC
implementation altogether.</p>

<p>musl is standards-conforming, lightweight C library. It also entirely
lacks a SUN RPC implementation.</p>

<p>TI-RPC is a stand-alone package. It may or may not be available (because
the user may not need SUN RPC stuff on an embedded device, for example).
Besides, it is not yet as feature-full as the implementation in glibc,
though for all practical means, it is totally useable.</p>

<p>So, there are cases where a SUN RPC implementation is not available.</p>

<p>This patch makes it so that the use of Yellow Pages is conditional on
the presence of a SUN RPC implementation, by checking at ./configure
whether the required header is present, and disabling the corresponding
code if the header is missing.</p>

<p>At the same time, the legacy, long unsupported AM_C_PROTOTYPES directive
is also removed, as it makes recent-ish autoconf fail.</dd>

<dt>1.20 (October 2013)</dt>
<dd><p>Nick Birch (Nick.Birch@s-and-t.com):  rtpsend -l (loop) flag does
not work.  Modified to rewind input file on feof if loop was set.  Fails
if length of line is greater than 2048 characters.  Increased to 4096
(sufficient for typical MTU-sized message such as 7 MPEG TS packets)</p>
<p>rtpdump:  Put space after ext_data=&lt;hex extension data&gt; so that
it can be parsed by rtpsend.  parse_header doesn't comprehend the
possible extension header.  As a consequence any extension header data
is also dumped twice.  Once in the ext_data report and then a second
time in the data report.  Modify parse_header to return hlen that
comprehends the extension header if present.<p>

<p>The format for reporting contributing sources does not match the format
accepted by rtpsend (i.e., reports "csrc[n] = xxxx" rather than
"csrc[n]=0xxxxx"). Fixed. Note: the documentation is less than clear on
the csrc syntax accepted by rtpsend.</p></dd>

<dt>1.19 (August 2010)</dt>
<dd><a href="http://www.burghardt.pl/">Krzysztof Burghardt</a>
(krzysztof@burghardt.pl):  "Wireshark implemented "rtpdump" file format
in a bit different way, so cooperation beetwen those program is a bit
problematic.  Moreover rtptools compiled on i386 and amd64 have
different size of file header (size of long in timeval is different)."

<dt>1.18 (September 2002)</dt>
<dd>Changes made by Akira Tsukamoto unless otherwise noted.
<ul>
<li>Port to MacOSX (10.2).

<li>Check for errors when resolving host name.

<li>For rtpdump, <tt>-F hex</tt>, <tt>-F rtcp</tt>, format fix.

<li>Update IANA payload types in rtpdump.

<li>Avoid allocating 8000 bytes buffer, copying and
destroying it every iteration.

<li>For bark.rtp, add RTCP packet, so the RAT could successfully receive
and play.  Originally, it was only containing RTP payload.

<li>Large ts and ssrc values would overflow; replaced <tt>strtol()</tt> with
<tt>strtoul()</tt>.

<li>Fixed out of range timeval, which led a spike on jitter in rare case.

<li>Fixed CPU 100% utilization problem for <tt>rtptrans</tt> (both Unix
and win32) <tt>rtpplay</tt>, <tt>rtpsend</tt> (only win32)

<li>Fixed broken compilation on Win32.

<li>For Win32, modified to use hi-resolution counter (win32 API) for
<tt>gettimeodday()</tt> from <tt>ftime()</tt>.  It was creating a large
jitter.

<li>For <tt>rtpplay</tt>, add <samp>-s</samp> flag to allow setting
source port of packets. (Ping Pan and Akira Tsukamoto)

<li>Bug fix that actually adds <samp>-o</samp> flag to rtpdump command line. 
(David Allouche)
</ul>

<dt>1.17 (April 2001)</dt>
<dd>Added <samp>-o</samp> option to <tt>rtpdump</tt>, so that output can
be directed to a file.  This is necessary so that the file can be opened
in binary mode.  Also configured stdout on Win32 for binary mode,
disabling the typical \n to \n\r translation.  (hgs)

<dt>1.16 (July 2000)</dt>
<dd>
<ul>
<li>For <tt>rtpsend</tt>, add <samp>-s</samp> flag to allow setting
source port of packets. (Ping Pan)

<li>For <tt>rtpsend</tt>, set RTCP timestamp to current value.  (Ping
Pan)

<li>Compile fixes for Linux. (Jori)
</ul>

<dt>1.15 (March 2000)</dt>
<dd>
<ul>
<li>For <tt>rtpsend</tt>, in function <tt>rtpsend()</tt>, added support
for transmiting RTCP messages, leading to a rewrite of
<tt>rtcp_packet()</tt> and the addition of the <tt>rtcp_write_XXX()</tt>
routines. (Ping Pan)

<li>Bug fix:  in <code>rtpsend()</code>, the <code>parse()</code>
routine should store <code>unsigned long</code> into <var>n->num</var>,
instead of <code>int</code>.  This caused an error for large SSRC
values.  (Ping Pan)

<li>In <tt>rtpdump()</tt>, the print-out for RTCP SR/RR report blocks
should have a space before the ')'.  This confused the <code>parse()</code>
routine in <code>rtpsend()</code>.  (Ping Pan)

<li><tt>rtpdump</tt> in <var>-F ascci</var> mode generated an ntp line
without preceding space, crashing rtpsend.  Fixed rtpdump.  (Wenyu
Jiang)

<li><tt>rtpsend</tt> sets X (extension) bit correctly and allows to
specify the extension header.  (Ping Pan)

<li><tt>rtpsend</tt> has <samp>-a</samp> flag to set the router alert
option when sending RTCP packets. This features is only useful for
testing YESSIR resource reservation.

<li><tt>rtpsend</tt> made more robust against invalid input.  Exits if
invalid input is found rather than trying to soldier on.

</ul>

<dt>1.14 (October 1999)</dt>
<dd>
<ul>
<li>Various portability fixes; now tested to compile on Solaris 2.6,
Linux 2.2.10, FreeBSD 2.2.7, and FreeBSD 3.3. (Jonathan Lennox)
</ul>

<dt>1.13 (August 1999)</dt>
<dd>
<ul>
<li>Change to autoconf format [<a href="mailto:pere@hungry.com">Petter
Reinholdtsen</a>]

<li>rtpplay, rtptrans:  compile fixes for HP/UX 10.20 and Irix 6.5. 
[<a href="mailto:pere@hungry.com">Petter Reinholdtsen</a>]

<li>rtpsend: htonl(seq) should be htons(seq). [Bruce Levens]

<li>Makefile: BIN directory wasn't created. [Mike Brescia]
<li>rtpsend: fix usage and commandline parsing [Mike Brescia].
<li>rtpsend: use absolute rather than relative timing [Mike Brescia];
this also removes an extra call to gettimeofday for each packet.
<li>rtpdump: endianness bug in line
<pre>
packet.p.hdr.plen   = ctrl ? 0 : len;
</pre>
[David M., davidm@cs.ucsb.edu]

<li>Changed 'u_int16 length' to 'unsigned int length:16' [<a
href="mailto:jori@lumumba.luc.ac.be">Jori</a>]
</ul>

<dt>1.11 (January 1999)</dt>
<dd>
<ul>
<li>Marc Eaddy found that MSVC++ 5.0 only works if seq is declared
unsigned int seq:16.

<li>Additional Linux fixes by <a href="mailto:pere@hungry.com"> Petter
Reinholdtsen</a>

<li>Windows NT/Win32 port by Xiaotao Wu (Columbia University).

</ul>

<dt>1.10 (March 1998)</dt>
<dd>
<ul>
<li>Bill Fenner:  "I've been experimenting with real short clips, and
discovered that rtpplay exited as soon as it read the last packet
instead of letting the playout happen, cutting off READAHEAD packets
(which in most cases was the whole file).  Here are my fixes.  Note that
I had to (somewhat kludgily) schedule another timeout, since the notify
system doesn't notice a notify_stop() request which is set from a
timeout until there's another event." [hgs:  Notify was changed to drop
out when there are no pending timers and no open file descriptors.]

<li>Jonathan Lennox created <tt>multidump</tt> and <tt>multiplay</tt>.

<li>Catch additional signals.

<li>rtpplay: Add <tt>-b</tt> and <tt>-e</tt> flags for playing back only
a selected portion of the file.

<li>rtpplay: The first RTP packet is now timed correctly with respect to
the preceding RTCP packet.
</ul>

<dt>1.9 (August 1997)</dt>
<dd>
<ul>
<li><tt>rtptrans</tt> also has non-sendmsg ifdef for Linux and similarly
socket-challenged systems (by <a href="mailto:Lutz Grueneberg 
<gruen@rvs.uni-hannover.de>">Lutz Grueneberg</a>)

<li>Port to FreeBSD (by <a href="mailto:Jonathan Lennox 
<lennox@cs.columbia.edu>">Jonathan Lennox</a>):

<ul>
<li>Added necessary architecture Makefile.
<li>Extracted hsearch code from GNU libc 2.0.4 for rtpplay.
<li>Massive byte-ordering cleanup (behavior under FreeBSD and Solaris should
be identical).
<li>Minor other changes for BSD 4.4 sockets.
</ul>
<li><code>rtpdump -f</code> <var>file</var> now shows a "from" address of
0.0.0.0:0.
<li>Updated rtpdump, rtpplay's payload type maps to reflect current IANA
numbers.
</ul>

<dt>1.8 (July 1997)</dt>
<dd>
<ul>
<li>Bug in parsing of RR fixed.
</ul>

<dt>1.6 (October 1996)</dt>
<dd>

<ul>
<li>Format flag on <code>rtpdump</code> changed from <code>-f</code>
to <code>-F</code> for consistency.

<li>Added ability to use RTP timestamps rather than received timing
for rtpplay, making it more useful for recording.

<li>rtpdump can read from files.

<li><code>-x</code> flag supported for dump format so that only
RTP/RTCP and media headers are logged.

<li>Fixed: random address information in header.
</ul>

<dt>1.0 (December 1995)</dt>

<dd>
<ul>
<li>First independent release of rtptools.

<li>Added rtptools/rtpsend to generate arbitrary RTP packets based on
text file.  Intended as a debugging and torture/compliance test
tool.  rtpsend reads files produced by rtpdump (ASCII mode).  For
replaying recordings, use rtpplay.  Only supports RTP data and SDES
RTCP packets right now.

</ul>
</dl>

<hr>
<small>Last updated 
<script type="text/JavaScript">
document.write(document.lastModified)
</script>
by <a href="http://www.cs.columbia.edu/~hgs">Henning Schulzrinne</a>
</small>

</body>
</html>
